home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #054 (1990)(Amiga User Group Deutschland e.V.).zip / Franz PD Disk #054 (1990)(Amiga User Group Deutschland e.V.).adf / DAM / DAM.s < prev   
Text File  |  1989-07-02  |  6KB  |  287 lines

  1. *******************************************************
  2. *                                                     *
  3. * This is Public Domain ! Do with it what you like !!!!
  4. *                                                     *
  5. *******************************************************
  6. ;
  7. ;
  8. ;DAM   =  Display available Memory
  9. ;         ~       ~         ~
  10. ;
  11. ; Autor :            Sascha Groening
  12. ;                    Blaustr.:    13
  13. ;                    8360 Deggendorf
  14. ;                    West-Germany
  15. ;
  16. ;
  17. ; Nutzen :
  18. ;
  19. ; Zeigt verfuegbaren Speicher in kleinem Window an .
  20. ;
  21. ; DAM ist der meines Wissens kuerzeste Memory-Displayer
  22. ;     (700 Byte lang)
  23. ;
  24. ;      ==> fuer Leute mit chronisch wenig Speicher besonders geeignet
  25. ;
  26. ;
  27. ;
  28. ; Programm wurde fuer den   A68K  Public Domain Assembler
  29. ;                           BLINK Public Domain Linker       geschrieben
  30. ;
  31. ;       (A68K :Fish Disk Nr.:110 )
  32. ;       (BLINK:Fish Disk Nr.: 40 )
  33. ;
  34. ;
  35. ; Assemblieren :     A68K SaveKick.s
  36. ;                    BLINK SaveKick.o
  37. ;
  38. ;
  39.  
  40. MEMF_PUBLIC  equ $1
  41. MEMF_CHIP    equ $2
  42. MEMF_FAST    equ $4
  43.  
  44. SysBase   equ 4
  45. OldOpenLibrary equ -408
  46. CloseLibrary equ -414
  47. AvailMem equ -216
  48. GetMsg equ -372
  49. ReplyMsg equ -378
  50.  
  51. Delay equ -198
  52.  
  53. CloseWindow equ -72
  54. OpenWindow equ -204
  55.  
  56. SetFont equ -66
  57. OpenFont equ -72
  58. CloseFont equ -78
  59. Text equ -60
  60. Move equ -240
  61.  
  62.  
  63.  
  64.  
  65. TOPAZ_EIGHTY equ $8
  66. FS_NORMAL    equ $0
  67. FPF_ROMFONT  equ $1
  68. wd_RPort     equ $32
  69. wd_UserPort  equ $56
  70. MP_SIGBIT    equ $0F
  71. SMART_REFRESH  equ $0000
  72.  
  73. WINDOWDRAG     equ $0002
  74. WINDOWDEPTH    equ $0004
  75. WINDOWCLOSE    equ $0008
  76. CLOSEWINDOW    equ $00000200
  77. WBENCHSCREEN   equ $0001
  78.  
  79. CALLGRAF macro
  80.          movea.l GfxBase,a6
  81.          jsr    \1(a6)
  82.          endm
  83.  
  84. CALLINT  macro
  85.          movea.l IntBase,a6
  86.          jsr    \1(a6)
  87.          endm
  88.  
  89. CALLEXEC macro
  90.          movea.l SysBase,a6
  91.          jsr    \1(a6)
  92.          endm
  93.  
  94. CALLDOS  macro
  95.          movea.l DOSBase,a6
  96.          jsr    \1(a6)
  97.          endm
  98.  
  99.  
  100. ***************************************************************
  101. ; Open dos int graf lib
  102.  
  103. _main
  104.         lea.l  dosname(pc),a1    ; open DOS-Library
  105.         CALLEXEC OldOpenLibrary
  106.         move.l d0,DOSBase
  107.         beq    abbruch
  108.  
  109.         lea.l  intname(pc),a1    ; open INTUITION-Library
  110.         jsr OldOpenLibrary(a6)
  111.         move.l d0,IntBase
  112.         beq    closedos
  113.  
  114.         lea.l  grafname(pc),a1   ; open GRAPHICS-Library
  115.         jsr OldOpenLibrary(a6)
  116.         move.l d0,GfxBase
  117.         beq    closeint
  118.  
  119. ; open window
  120.  
  121.         lea.l  windowdef(pc),a0  ; Window öffnen
  122.         CALLINT OpenWindow
  123.         move.l d0,Window
  124.         beq    closegraf
  125.  
  126. ; open font
  127.  
  128.         lea.l  FONT(pc),a0            ; Topaz-80 (ROM-Zeichensatz)
  129.         CALLGRAF OpenFont           ; öffnen und benutzen
  130.         move.l d0,Font
  131.         beq    closewindow
  132.  
  133.         movea.l d0,a0
  134.         movea.l Window,a1
  135.         movea.l wd_RPort(a1),a1
  136.         move.l a1,RPort
  137.         jsr SetFont(a6)
  138.  
  139. ***************
  140. ; Hauptschleife
  141.  
  142. Schleife
  143.         moveq.l #MEMF_PUBLIC,d1     ; Freies RAM feststellen
  144.         CALLEXEC  AvailMem
  145.         move.l d0,d2
  146.         lea.l buffer1(pc),a0
  147.         bsr   decl                 ;Zahl in ASCII-Code umwandeln
  148.  
  149.         moveq.l #MEMF_CHIP,d1       ; dasselbe wie oben, nur mit Chip-RAM
  150.         jsr AvailMem(a6)
  151.         move.l d0,d2
  152.         lea.l  buffer2(pc),a0
  153.         bsr    decl
  154.  
  155.    moveq.l #30,d0
  156.    moveq.l #7,d1
  157.    movea.l RPort,a1
  158.    CALLGRAF Move
  159.    lea.l  Text1,a0
  160.    moveq.l #28,d0
  161.    movea.l RPort,a1
  162.    jsr Text(a6)
  163.  
  164.         moveq.l #40,d1          ; anderen  Task Zeit lassen
  165.         CALLDOS Delay
  166.  
  167.         movea.l Window,a0               ; CloseWindow ?
  168.         movea.l wd_UserPort(a0),a0
  169.         CALLEXEC GetMsg
  170.         tst.l  d0
  171.         beq.s  Schleife
  172.  
  173. *******************
  174. ; Cleanup ()
  175.  
  176.  
  177.         movea.l d0,a1
  178.         jsr     ReplyMsg(a6)
  179. fini
  180.         movea.l  Font,a1         ; alles schließen
  181.         CALLGRAF CloseFont
  182.  
  183. closewindow
  184.      movea.l  Window,a0
  185.      CALLINT CloseWindow
  186. closegraf
  187.      movea.l  GfxBase,a1
  188.      CALLEXEC CloseLibrary
  189. closeint
  190.      movea.l  IntBase,a1
  191.      CALLEXEC CloseLibrary
  192. closedos
  193.      movea.l  DOSBase,a1
  194.      CALLEXEC CloseLibrary
  195. abbruch
  196.  
  197.      clr.l d0
  198.      rts
  199.  
  200.  
  201. ******************************
  202. ; Unterprogs
  203.  
  204.  
  205.  
  206. ;
  207. ; Konvertiere d2.l -> Dec-String ab (buffer)
  208. ;
  209.  
  210. decl
  211.     moveq.l #5,d0
  212.     move.l  a0,-(a7)
  213.     adda.l  #9,a0
  214. loop6
  215.     divu    #10,d2                      ;d2/10==>Quotient im niederwertigen
  216.     swap    d2                          ;        Wort,Rest im hoeherwertigen
  217.     moveq.l #15,d1                      ;
  218.     and.l   d2,d1                       ; Rest-->d1 +48-->Ziffer(0-9)
  219.     addi.l  #48,d1                      ;
  220.     move.b  d1,-(a0)                    ;eintragen
  221.     swap    d2                          ;Quotient
  222.     and.l   #$ffff,d2                   ;        \vom Rest befreien
  223.     dbra    d0,loop6    ;(dbf=dbra nur andere Schreibweise)   \und weiter wandeln
  224.  
  225.     moveq.l #5,d0        ;Nullen am Anfang durch Leerzeichen
  226.     movea.l (a7)+,a0     ;ersetzen
  227.     addq.l  #3,a0
  228. loop7
  229.     cmpi.b  #48,(a0)     ;eine 0 ?
  230.     bne     fini3
  231.     move.b  #32,(a0)         ;durch Leerzeichen ersetzen
  232.     addq.l  #1,a0
  233.     dbra    d0,loop7
  234. fini3
  235.     rts
  236.  
  237.  
  238.  
  239.  
  240. W_Gadgets  equ  WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE
  241. W_Extras   equ  SMART_REFRESH
  242. Activation equ  W_Gadgets!W_Extras
  243.  
  244. windowdef
  245.         dc.w    128,0
  246.         dc.w    308,10
  247.         dc.b    -1,-1
  248.         dc.l    CLOSEWINDOW
  249.         dc.l    Activation
  250.         dc.l    0
  251.         dc.l    0
  252.         dc.l    0
  253.         dc.l    0
  254.         dc.l    0
  255.         dc.w    135,21
  256.         dc.w    135,36
  257.         dc.w    WBENCHSCREEN
  258.  
  259.  
  260. FONT    dc.l    fontname
  261.         dc.w    TOPAZ_EIGHTY
  262.         dc.b    FS_NORMAL
  263.         dc.b    FPF_ROMFONT
  264.         cnop 0,2
  265.  
  266. intname  dc.b 'intuition.library',0
  267. grafname dc.b 'graphics.library',0,0
  268. dosname  dc.b 'dos.library',0
  269. fontname dc.b 'topaz.font',0,0
  270.         cnop 0,2
  271. Text1   dc.b ' RAM'
  272. buffer1 dc.b '          '
  273. Text2   dc.b 'Chip'
  274. buffer2 dc.b '          '
  275.         cnop 0,2
  276.  
  277.  
  278. IntBase ds.l    1
  279. GfxBase ds.l    1
  280. DOSBase ds.l    1
  281. Window  ds.l    1
  282. RPort   ds.l    1
  283. Font    ds.l    1
  284.  
  285.  
  286.        END
  287.